﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;

namespace SocialLearning
{
    #region Basic Details

    public interface I_UAC_BasicDetails
    {
        #region Properties

        int uid { get; set; }

        string Firstname { get; set; }

        string Lastname { get; set; }

        UAC_Gender Gender { get; set; }

        string ID { get; set; }

        string Email { get; set; }

        string ContactNumber { get; set; }

        string UserType { get; set; }

        string FamiltyID { get; set; }

        #endregion
    }

    #endregion

    #region Advance Details


    public interface I_UAC_AdvancedDetails
    {
        #region Properties

        int uid { get; set; }

        DateTime DateOfBirth { get; set; }

        string HomeLanguage { get; set; }

        string Nationality { get; set; }

        string HomeAddress { get; set; }

        string PostalAddress { get; set; }

        string City { get; set; }

        string Country { get; set; }

        string Code { get; set; }

        string MedicalAid { get; set; }

        string MedicalAidNumber { get; set; }

        UAC_EthnicGroup EthnicGroup { get; set; }

        UAC_Disabilities Disabilities { get; set; }

        #endregion
    }

    #endregion

    #region Marketing Details


    public interface I_UAC_MarketingDetails
    {

        int uid { get; set; }

        string MarketingMedium { get; set; }

        string MarketingComment { get; set; }

        DateTime MarketingDateOfSubmission { get; set; }

        UAC_OccupationStatus CurrentStatus { get; set; }

        string HighschoolDetails { get; set; }
    }

    #endregion

    #region Education Institution


    public interface I_UAC_InstitutionBackground
    {

        int uid { get; set; }

        string InstitutionName { get; set; }

        DateTime StartDate { get; set; }

        DateTime EndDate { get; set; }

        List<I_UAC_InstitutionSubjectResult> InstitutionSubjects { get; set; }

    }


    public interface I_UAC_InstitutionSubjectResult
    {

        int uid { get; set; }

        string SubjectName { get; set; }

        string SubjectCode { get; set; }

        UAC_Grade NQFLevel { get; set; }

        string Result { get; set; }
    }


    public interface I_UAC_EducationalBackground
    {

        int uid { get; set; }

        List<I_UAC_InstitutionBackground> Institution { get; set; }
    }

    #endregion

    #region Authentication

    public interface I_UAC_RegistrationDetails
    {
        UAC_Account RegisterNewAccount(I_UAC_BasicDetails basicDetails,
                                I_UAC_AdvancedDetails advanceDetails,
                                I_UAC_MarketingDetails marketingDetails,
                                I_UAC_EducationalBackground educationDetails,
                                string accountPassword, string secretQuestion, string secretPasscode);
    }

    public interface I_UAC_Authentication
    {
        #region Methods
        bool IsRegistered(string email);
        bool ResetPassword(string email, string secretcdoe);
        #endregion
    }

    #endregion

    #region AccountDetails


    public interface I_UAC_Account
    {
        int uid { get; set; }

        I_UAC_BasicDetails BasicAccountDetails { get; set; }

        I_UAC_AdvancedDetails AdvancedAccountDetails { get; set; }

        I_UAC_MarketingDetails MarketingDetails { get; set; }

        I_UAC_EducationalBackground EducationBackground { get; set; }

        string AccountUID { get; set; }
        string Password { get; set; }
        string SecretQuestion { get; set; }
        string SecretPassCode { get; set; }
        bool Status { get; set; }
    }

    #endregion
}
